package validator

import (
	"errors"
	"regexp"
)

// ValidateEmail 验证邮箱格式
func ValidateEmail(email string) error {
	pattern := `^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$`
	matched, err := regexp.MatchString(pattern, email)
	if err != nil {
		return errors.New("邮箱格式验证失败")
	}
	if !matched {
		return errors.New("邮箱格式不正确")
	}
	return nil
}

// ValidatePhone 验证手机号格式（中国大陆）
func ValidatePhone(phone string) error {
	pattern := `^1[3-9]\d{9}$`
	matched, err := regexp.MatchString(pattern, phone)
	if err != nil {
		return errors.New("手机号验证失败")
	}
	if !matched {
		return errors.New("手机号格式不正确")
	}
	return nil
}

// ValidateUsername 验证用户名
// 要求：3-50位，只能包含字母、数字、下划线
func ValidateUsername(username string) error {
	if len(username) < 3 || len(username) > 50 {
		return errors.New("用户名长度必须在3-50位之间")
	}

	pattern := `^[a-zA-Z0-9_]+$`
	matched, err := regexp.MatchString(pattern, username)
	if err != nil {
		return errors.New("用户名验证失败")
	}
	if !matched {
		return errors.New("用户名只能包含字母、数字和下划线")
	}
	return nil
}
